#include<bits/stdc++.h>
#define ll long long
using namespace std;

int n;
ll w[1005];

ll f(ll a,ll b,ll c,ll d,ll e){
	return a+b*256+c*65536+d*16777216+e*4294967296;
}

bool d(string s,int num[]){
	int l=s.length();
	int j=1;
	int can0=0;
	for(int i=0;i<l;i++){
		if(j>=6){
			return false;
		}
		if(s[i]=='0'){
			if(can0==1)
				num[j]=num[j]*10;
			else if(can0==-1){
				return false;
			}
			else
				can0=-1;
		}
		else if('1'<=s[i]&&s[i]<='9'){
			if(can0==-1){
				return false;
			}
			num[j]=num[j]*10+s[i]-'0';
			can0=1;
		}
		else if(s[i]=='.'){
			if(j>=4){
				return false;
			}
			j++;
			can0=0;
		}
		else if(s[i]==':'){
			if(j!=4){
				return false;
			}
			j++;
			can0=0;
		}
		else{
			return false;
		}
	}
	if(j!=5){
		return false;
	}
	if(num[1]>=256||
	   num[2]>=256||
	   num[3]>=256||
	   num[4]>=256||
	   num[5]>=65536){
	   return false;
	}
	return true;
}

int main(){
	freopen("network.in","r",stdin);
	freopen("network.out","w",stdout);
	
	memset(w,0xff,sizeof(w));
	
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		int num[10]={0};
		string op,s;
		cin>>op>>s;
		if(op[0]=='S'){
			if(d(s,num)){
				ll k=f(num[1],num[2],num[3],num[4],num[5]);
				bool flag=0;
				for(int j=1;j<=i;j++){
					if(w[j]==k){
						printf("FAIL\n");
						flag=1;
						break;
					}
				}
				if(!flag){
					w[i]=k;
					printf("OK\n");
				}
			}
			else{
				printf("ERR\n");
			}
		}
		else{
			if(d(s,num)){
				ll k=f(num[1],num[2],num[3],num[4],num[5]);
				bool flag=0;
				for(int j=1;j<=i;j++){
					if(w[j]==k){
						printf("%d\n",j);
						flag=1;
						break;
					}
				}
				if(!flag)printf("FAIL\n");
			}
			else{
				printf("ERR\n");
			}
		}
	}
	return 0;
}

